package java学习.代码随想录.动态规划;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

/**
 * **************
 * 项目名称: 蓝桥杯-Java学习 <br/>
 * 文件名称:  <br/>
 * 文件描述: 这里添加您的类文件描述，说明当前文件要包含的功能。 <br/>
 * 文件创建：刘世锦Lenovo <br/>
 * 创建时间: 2022/8/28 <br/>
 *
 * @version v1.0 <br/>
 * @update [序号][日期YYYY-MM-DD][更改人姓名][变更描述]<br/>
 * *************
 */
public class 数组互转List {

    public static void main(String[] args) {
        int[] weight = {1, 3, 4};
        int[] value = {15, 20, 30};
        int[] nums = {2,3,2};
        Integer[] nums1 = {2,3,2};

        int bagWeight = 4;
//        1. Arrays.asList(nums) 放入ArrayList 可增删
//       1.1 注意： 若数组是八大基本数据类型则 声明为包装类才能输出值；否则为其引用地址
        List<int[]> ints = new ArrayList<>(Arrays.asList(nums));
        System.out.println("asList -- 基本类型：  输出为引用地址:"+ints.toString());

//       1.1.1 基本类型输出值
        for (int[] anInt : ints) {
            System.out.println("asList --基本类型： 遍历值"+Arrays.toString(anInt));
        }

//        1.2 包装类： 可输出值
        ArrayList<Integer> list = new ArrayList<>(Arrays.asList(nums1));
        System.out.println("asList --数组声明为包装类：遍历值"+list);

//        2. Arrays.asList(nums) 不可增删
        List<int[]> ints1 = Arrays.asList(nums);
        System.out.println("asList 不可增删 输出为引用地址--"+ints1);

//        3.  Collections.addAll()
        ArrayList<int[]> list1 = new ArrayList<>();
        Collections.addAll(list1,nums);
        for (int[] o : list1) {
            System.out.println("Collections.addAll() -- 输出地址"+o+" ");
            System.out.println("Collections.addAll() -- 输出其值"+Arrays.toString(o)+" ");

        }
        System.out.println("Collections.addAll() -- 输出地址"+list1+" ");


//         4. Stream流
//         4.1 八种基本数据类型
        int []te = new int[4];
        List<Integer> collect = Arrays.stream(nums).boxed().collect(Collectors.toList());
        System.out.println("stream流.boxed() --基本类型：输出值"+collect);


        // 4.2 非八种基本数据类型直接转换
        String []te1 = new String[4];
        List<String> collect1 = Arrays.stream(te1).collect(Collectors.toList());
        System.out.println("stream流  --非基本类型String：输出值"+collect1);

//        list转数组 (只能是引用类型)
        Integer[] integers = collect.toArray(new Integer[collect.size()]);
        System.out.println("Array:"+Arrays.toString(integers));
    }
}
